//引入封装好的接口
import {
  userlist,
  usercount
} from "../../../request/api";
// 菜单模块
const state = {
  userlist: [], //管理员列表
  pageSize: 2, //页面渲染的条数
  pageNum: 1, //页码
  count: 0 //总条数
};
const getters = {
  //获取管理员列表
  getUser(state) {
    return state.userlist;
  },
  getSize(state) {
    return state.pageSize
  },
  getCount(state) {
    return state.count
  }
};
const mutations = {
  REQ_USERLIST(state, payload) {
    state.userlist = payload
  },
  REQ_COUNT(state, payload) {
    state.count = payload
  },
  //封装一个修改页码的事件
  REQ_PAGENUM(state, payload) {
    state.pageNum = payload
  }
};
const actions = {
  //获取管理员列表行动
  getUserAction(context) {
    console.log(context, 'context')
    userlist({
        size: context.state.pageSize,
        page: context.state.pageNum
      })
      .then(res => {
        //目前后端无数据情况，返回不够好，返回了null。正常数组没数据要返回[] 如果你的后端不愿意帮你优化，那么你前端优化
        console.log(res, '管理员列表');
        let list = res.list ? res.list : []
        //解决删除bug  剔除第一页的情况 并且 是最后一条数据 就是空数组的情况
        if (context.state.pageNum != 1 && list.length == 0) {
          //重新触发页码修改
          context.dispatch('changePageAction', context.state.pageNum - 1)
        }
        context.commit('REQ_USERLIST', res.list)
        /* 
        思路分析：
        出现什么bug？ 如何产生这个bug? 直接解决这个bug
        当非第一页剩余一条数据的时候，我们经过删除，发现当前还是在检索本身页码的数据。本身页码已经不存在所以出现了暂无数据的bug
        解决：
        当它不是第一页且是最后一条数据的时候 我们pageNum(页码)-1
        */
      })
  },
  //获取总条数
  getCountAction({
    commit
  }) {
    usercount()
      .then(res => {
        console.log(res, '条数');
        commit('REQ_COUNT', res.list[0].total)
      })
  },
  //封装一个切换页码并重新触发列表的事件
  changePageAction(context, payload) {
    console.log(payload, '组件传递的内容')
    //修改一下页码
    context.commit('REQ_PAGENUM', payload)
    //重新触发行动(接口列表)
    context.dispatch('getUserAction')
  }
};

export default {
  state,
  getters,
  mutations,
  actions,
  namespaced: true,
};